home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacFormat España 15
/
macformat_15.iso
/
C de cerca
/
Ejemplos
/
Capitulo 1
/
CdeCerca.c
< prev
Wrap
C/C++ Source or Header
|
1996-02-07
|
6KB
|
197 lines
/*****************************************************************/
/*
C de Cerca 1
Introducción al lenguaje C y su aplicación
para la programación del Mac
Rafael Escoté - Enric Herrera
©BlauSoft S.L. para MacFormat España - 1996
La descripción del código y la información sobre cómo preparar
el entorno de programación y generar estos programas, está contenida
en el ejemplar de MacFormat que los acompaña.
*/
/*****************************************************************/
/**************************************************************** */
/* DECLARACION DE PROTOTIPOS DE LAS FUNCIONES QUE HEMOS CREADO */
/* EN NUESTRO PROGRAMA */
/**************************************************************** */
void main(void); /* Esta función NO puede tener otro nombre */
void MF_InitToolbox (void); /* Preparar el Mac */
void MF_AbreMiVentana (void); /* Abrir una ventana */
void MF_EscribeTexto (void); /* Poner en ella un texto */
void MF_bucle_principal(void); /* Esperar acciones del usuario */
/**************************************************************** */
/* CONSTANTES Y VARIABLES GLOBALES */
/* RELACIONADAS CON LA VENTANA QUE ABRIREMOS */
/**************************************************************** */
/* La ventana que abriremos será creada dinámicamente por medio de
la función NewWindow() que nos devolverá un puntero a la estructura de
la nueva ventana, Declaramos pues, una variable adecuada... */
WindowPtr gMiVentana = nil;
/*--------------------------------------------------------------------*/
/* A PARTIR DE ESTE PUNTO, APARECE EL CODIGO DE LAS FUNCIONES CREADAS
ESPECIFICAMENTE PARA ESTE PROGRAMA.
/*--------------------------------------------------------------------*/
/**************************************************************** */
/* FUNCION: main() */
/**************************************************************** */
/*
Todos los programas en C poseen una función que debe llamarse main.
Cuando un programa se pone en marcha, lo hace SIEMPRE ejecutando
en primer lugar la función main().
Es el punto de entrada a nuestra aplicación.
Recibe: nada
Que hace: Llama otras funciones que preparan la aplicación...
Salida: void (nada)
*/
void main (void)
{
/* Antes de hacer nada, debemos preparar el entorno de nuestro programa.*/
/* Como sea que el procedimiento a seguir es casi siempre el mismo, */
/* hemos creado una función MF_InitToolbox() que realiza la preparación */
/* adecuada */
MF_InitToolbox();
/* Ahora empleamos una función que se encargará de abrir una ventana */
MF_AbreMiVentana();
/* Una vez abierta la ventana, podemos escribir algo de texto en ella */
MF_EscribeTexto();
/* Y ya podemos entrar en el bucle principal, que se encargará de
recoger e interpretar las acciones del usuario */
MF_bucle_principal();
/* Cuando el bucle principal haya terminado, será porque el usuario
desea acabar el programa.
Debemos liberar la memoria ocupada por nuestra ventana. */
DisposeWindow(gMiVentana);
/* Y ya está, al acabarse la función main(), el Sistema cerrará
nuestra aplicación de forma automática */
} /* Fin de main() y del programa */
/**************************************************************** */
/* MF_bucle_principal */
/**************************************************************** */
/*
Recibe: nada
Que hace: Entra en un bucle y espera que se produzca una acción
En esta demo, simplemente esperamos que el usuario pulse una vez el
botón del ratón. Cuando lo haga, la función acabará y el programa
volverá a la función main().
Salida: nada
*/
void MF_bucle_principal(void)
{
while (Button() == 0) ; /* Esperamos que el usuario pulse el botón */
} /* Fin de la función MF_bucle_principal() */
/**************************************************************** */
/* MF_InitToolbox */
/**************************************************************** */
/*
Inicializa la Toolbox Macintosh. El orden de llamada a las diversas
rutinas es significativo! No lo cambie.
Recibe: nada
Cambia: nada en la aplicación
Salida: nada
*/
void MF_InitToolbox (void)
{
InitGraf(&qd.thePort);
InitFonts();
FlushEvents(everyEvent,0);
InitWindows();
InitMenus();
TEInit();
InitDialogs(0L);
InitCursor();
} /* Fin de MF_InitToolbox() */
/**************************************************************** */
/* MF_AbreMiVentana */
/**************************************************************** */
/*
Abre la ventana (la única) de nuestro programa. Las funciones empleadas
y el significado de los parámetros que utilizamos se comentarán en posteriores
versiones de esta aplicación.
Recibe: nada
Que hace: Crea una ventana...
Salida: void (nada)
*/
void MF_AbreMiVentana(void)
{
/* Declaración e inicialización de una variable de tipo Rect */
Rect miRectangulo = { 48, 8,108, 300 };
gMiVentana = NewWindow( nil,
&miRectangulo,
"\pC de Cerca - 1",
true,
documentProc,
(WindowPtr)-1L,
false,
nil);
if(gMiVentana == nil)
ExitToShell(); /* Si la creación de la ventana falla,
posiblemente sea debido a falta de memoria libre
Lo más aconsejable es salir de la aplicación YA,
empleando ExitToShell()
*/
} /* Fin de MF_AbreMiVentana() */
/****************************************************************/
/* MF_EscribeTexto */
/****************************************************************/
/*
Dibuja en nuestra ventana un texto.
Recibe: nada
Cambia: Escribe un texto en la ventana
Salida: nada
*/
void MF_EscribeTexto()
{
SetPort(gMiVentana);
MoveTo(15,20);
DrawString("\pLa mínima expresión de un programa en C.");
MoveTo(15,35);
DrawString("\pHaga clic para salir...");
} /* Fin de MF_EscribeTexto() */